import router from './router' // 引入路由实例
import store from './store' // 引入共享数据仓库实例store
// 导入进度条插件
import NProgress from 'nprogress'
// 导入进度条样式
import 'nprogress/nprogress.css'
// 导入
import getPageTitle from '@/utils/get-page-title'
// 白名单
const whiteList = ['/login', '/404'] // no redirect whitelist
// 全局前置路由守卫
router.beforeEach(async(to, from, next) => {
  // 开启进度条
  NProgress.start
  // 获取token
  const token = store.getters.token
  // 已登录
  if (token) {
    // 访问白名单 强制跳转首页
    if (whiteList.includes(to.path)) {
      next('/')
      // 关闭进度条
      return NProgress.done()
    }
    // 否则放行
    next()
    // 用户名不存在调用接口获取成功放行
    if (!store.getters.name) await store.dispatch('user/getUserInfoActions')
  } else { // 未登录
    // 访问白名单 放行
    if (whiteList.includes(to.path)) return next()
    // 否则 强制跳转登录页
    next('/login')
    // 关闭进度条
    NProgress.done()
  }
  // token ? (whiteList.includes(to.path) ? next('/') : next()) : (whiteList.includes(to.path) ? next() : next('/login'))
})
// 全局后置路由守卫
router.afterEach((to) => {
  // 关闭进度条
  NProgress.done()
  // 标题更换
  document.title = getPageTitle(to.meta.title)
})
